package day12;

import java.math.BigDecimal;
import java.util.Scanner;

//测试  小数运算不精确的解决方案
public class Test4_BigDecimal {
    public static void main(String[] args) {
//        method();//暴露问题
        method2();//用工具解决
    }
    public static void method2() {
        //1, 接收用户输入的两个小数
        double a = new Scanner(System.in).nextDouble();
        double b = new Scanner(System.in).nextDouble();
        //2, 做运算
        //2.1,创建工具类的对象
//        BigDecimal(double val) --有坑,更不准了
//        BigDecimal(String val) --推荐使用 !!!
        BigDecimal bd1 = new BigDecimal(   String.valueOf(a) );
        BigDecimal bd2 = new BigDecimal(b+"");
        //2.2,常用方法
        BigDecimal bd3 = bd1.add(bd2);//--加法
        System.out.println(bd3);
        bd3 = bd1.subtract(bd2) ;//--减法
        System.out.println(bd3);
        bd3 = bd1.multiply(bd2) ;//--乘法
        System.out.println(bd3);
        //除不尽时,会抛出异常:ArithmeticException
//        bd3 = bd1.divide(bd2) ;//--除法
        //第一个参数是想和谁做运算...第二个参数是保留的位数...第三个参数是舍入模式
        bd3 = bd1.divide(bd2,5,BigDecimal.ROUND_HALF_UP) ;//--除法
        System.out.println(bd3);
    }
    public static void method() {
        //1, 接收用户输入的两个小数
        double a = new Scanner(System.in).nextDouble();
        double b = new Scanner(System.in).nextDouble();

        //2, 做运算
        System.out.println(a+b);//不精确
        System.out.println(a-b);//不精确
        System.out.println(a*b);//不精确
        System.out.println(a/b);//不精确
    }
}
